#pragma once

#ifndef GRAPH
#define GRAPH

#include <map>
#include "boost/graph/adjacency_list.hpp"

namespace analyzer {

	struct vertex_type_t {
		typedef boost::vertex_property_tag kind;
	};

	typedef boost::property<vertex_type_t, int> VertexTypeProperty;
	typedef boost::property<boost::vertex_name_t, std::string, VertexTypeProperty> VertexProperty;

	typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS, VertexProperty> Graph;
	typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
	typedef std::map<std::string, Vertex> VertexNameMap;

	enum VertexColor { white, gray, black };
}

#endif // GRAPH